Packets of data that are communicated in a network such as a wireless network are often vulnerable to corruption by a variety of mechanisms including noise and competing signals that can interfere with the communication. As a result, the data arriving at a receiver may differ from the corresponding data that left the transmitter. Information such as cyclical redundancy codes may be included with the data to facilitate the detection of errors. This type of information is often referred to as error-detection codes. Various types of redundant information, often referred to as error-correction codes, may be included to facilitate the detection and correction of errors. Errors may also be corrected by a variety of communication techniques including those that allow a receiver to request the retransmission of a packet whenever an error is detected in that packet, or that obligates a transmitter to transmit a packet multiple times and allows a receiver the ability to derive corrected data from the multiple packets.
Unfortunately, these known techniques for correcting errors in received data require additional capacity to store or convey the required redundant data. What is needed is a way to correct errors that does not require additional overhead or redundant data such as error-correction codes.